home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / amiga / gui / mui / mui14-dv.lha / MUI / Developer / Modula / txt / MuiMacros.mod < prev    next >
Encoding:
Modula Implementation  |  1993-10-27  |  19.6 KB  |  664 lines

  1. IMPLEMENTATION MODULE MuiMacros;
  2.  
  3. (*$ NilChk      := FALSE *)
  4. (*$ EntryClear  := FALSE *)
  5. (*$ LargeVars   := FALSE *)
  6. (*$ StackParms  := FALSE *)
  7.  
  8. (****************************************************************************
  9. **
  10. **      MUI Macros
  11. **
  12. **      Converted to Modula by Christian "Kochtopf" Scholz
  13. **
  14. ****************************************************************************)
  15.  
  16. IMPORT  MD:MuiD;
  17. IMPORT  ML:MuiL;
  18. IMPORT  UD:UtilityD;
  19. IMPORT  R;
  20. FROM    MuiSupport IMPORT DoMethod;
  21. FROM    UtilityD IMPORT tagEnd, tagMore, HookPtr, Hook;
  22. FROM    SYSTEM IMPORT ADDRESS, ADR, TAG, CAST, SETREG, REG;
  23. FROM    IntuitionL IMPORT SetAttrsA, GetAttr;
  24. FROM    IntuitionD IMPORT omGET, omADDMEMBER, omREMMEMBER;
  25. FROM    Storage IMPORT ALLOCATE;
  26.  
  27. VAR buffer  : ARRAY [0..50] OF LONGINT;      (* for the tags *)
  28.  
  29. (*
  30. **
  31. **  MUI - Object Generation
  32. **
  33. *)
  34.  
  35. PROCEDURE WindowObject(tags : UD.TagItemPtr) : APTR;
  36.     BEGIN
  37.         RETURN ML.mNewObject(ADR(MD.mcWindow), tags);
  38.     END WindowObject;
  39.  
  40. PROCEDURE ImageObject(tags : UD.TagItemPtr) : APTR;
  41.     BEGIN
  42.         RETURN ML.mNewObject(ADR(MD.mcImage), tags);
  43.     END ImageObject;
  44.  
  45. PROCEDURE ApplicationObject(tags : UD.TagItemPtr) : APTR;
  46.     BEGIN
  47.         RETURN ML.mNewObject(ADR(MD.mcApplication), tags);
  48.     END ApplicationObject;
  49.  
  50. PROCEDURE NotifyObject(tags : UD.TagItemPtr) : APTR;
  51.     BEGIN
  52.         RETURN ML.mNewObject(ADR(MD.mcNotify), tags);
  53.     END NotifyObject;
  54.  
  55. PROCEDURE TextObject(tags : UD.TagItemPtr) : APTR;
  56.     BEGIN
  57.         RETURN ML.mNewObject(ADR(MD.mcText), tags);
  58.     END TextObject;
  59.  
  60. PROCEDURE RectangleObject(tags : UD.TagItemPtr) : APTR;
  61.     BEGIN
  62.         RETURN ML.mNewObject(ADR(MD.mcRectangle), tags);
  63.     END RectangleObject;
  64.  
  65. PROCEDURE ListObject(tags : UD.TagItemPtr) : APTR;
  66.     BEGIN
  67.         RETURN ML.mNewObject(ADR(MD.mcList), tags);
  68.     END ListObject;
  69.  
  70. PROCEDURE PropObject(tags : UD.TagItemPtr) : APTR;
  71.     BEGIN
  72.         RETURN ML.mNewObject(ADR(MD.mcProp), tags);
  73.     END PropObject;
  74.  
  75. PROCEDURE StringObject(tags : UD.TagItemPtr) : APTR;
  76.     BEGIN
  77.         RETURN ML.mNewObject(ADR(MD.mcString), tags);
  78.     END StringObject;
  79.  
  80. PROCEDURE ScrollbarObject(tags : UD.TagItemPtr) : APTR;
  81.     BEGIN
  82.         RETURN ML.mNewObject(ADR(MD.mcScrollbar), tags);
  83.     END ScrollbarObject;
  84.  
  85. PROCEDURE ListviewObject(tags : UD.TagItemPtr) : APTR;
  86.     BEGIN
  87.         RETURN ML.mNewObject(ADR(MD.mcListview), tags);
  88.     END ListviewObject;
  89.  
  90. PROCEDURE RadioObject(tags : UD.TagItemPtr) : APTR;
  91.     BEGIN
  92.         RETURN ML.mNewObject(ADR(MD.mcRadio), tags);
  93.     END RadioObject;
  94.  
  95. PROCEDURE VolumelistObject(tags : UD.TagItemPtr) : APTR;
  96.     BEGIN
  97.         RETURN ML.mNewObject(ADR(MD.mcVolumelist), tags);
  98.     END VolumelistObject;
  99.  
  100. PROCEDURE FloattextObject(tags : UD.TagItemPtr) : APTR;
  101.     BEGIN
  102.         RETURN ML.mNewObject(ADR(MD.mcFloattext), tags);
  103.     END FloattextObject;
  104.  
  105. PROCEDURE DirListObject(tags : UD.TagItemPtr) : APTR;
  106.     BEGIN
  107.         RETURN ML.mNewObject(ADR(MD.mcDirlist), tags);
  108.     END DirListObject;
  109.  
  110. (* Not implemented!
  111. PROCEDURE ApplistObject(tags : UD.TagItemPtr) : APTR;
  112.     BEGIN
  113.         RETURN ML.mNewObject(ADR(MD.mcApplist), tags);
  114.     END ApplistObject;
  115.  
  116. PROCEDURE DatatypeObject(tags : UD.TagItemPtr) : APTR;
  117.     BEGIN
  118.         RETURN ML.mNewObject(ADR(MD.mcDatatype), tags);
  119.     END DatatypeObject; 
  120. *)
  121.  
  122. PROCEDURE SliderObject(tags : UD.TagItemPtr) : APTR;
  123.     BEGIN
  124.         RETURN ML.mNewObject(ADR(MD.mcSlider), tags);
  125.     END SliderObject;
  126.  
  127. PROCEDURE CycleObject(tags : UD.TagItemPtr) : APTR;
  128.     BEGIN
  129.         RETURN ML.mNewObject(ADR(MD.mcCycle), tags);
  130.     END CycleObject;
  131.  
  132. PROCEDURE GaugeObject(tags : UD.TagItemPtr) : APTR;
  133.     BEGIN
  134.         RETURN ML.mNewObject(ADR(MD.mcGauge), tags);
  135.     END GaugeObject;
  136.  
  137. PROCEDURE BoopsiObject(tags : UD.TagItemPtr) : APTR;
  138.     BEGIN
  139.         RETURN ML.mNewObject(ADR(MD.mcBoopsi), tags);
  140.     END BoopsiObject;
  141.  
  142. PROCEDURE ScaleObject(tags : UD.TagItemPtr) : APTR;
  143.     BEGIN
  144.         RETURN ML.mNewObject(ADR(MD.mcScale), tags);
  145.     END ScaleObject;
  146.  
  147. PROCEDURE GroupObject(tags : UD.TagItemPtr) : APTR;
  148.     BEGIN
  149.         RETURN ML.mNewObject(ADR(MD.mcGroup), tags);
  150.     END GroupObject;
  151.  
  152. PROCEDURE VGroup(tags : UD.TagItemPtr) : APTR;
  153.     BEGIN
  154.         RETURN ML.mNewObject(ADR(MD.mcGroup), tags);
  155.     END VGroup;
  156.  
  157. PROCEDURE HGroup(tags : UD.TagItemPtr) : APTR;
  158.     BEGIN
  159.         RETURN ML.mNewObject(ADR(MD.mcGroup), TAG(buffer, MD.maGroupHoriz, TRUE, tagMore, tags, tagEnd));
  160.     END HGroup;
  161.  
  162. PROCEDURE ColGroup(cols : LONGCARD; tags : UD.TagItemPtr) : APTR;
  163.     BEGIN
  164.         RETURN ML.mNewObject(ADR(MD.mcGroup), TAG(buffer, MD.maGroupColumns, cols, tagMore, tags, tagEnd));
  165.     END ColGroup;
  166.  
  167. PROCEDURE RowGroup(rows : LONGCARD; tags : UD.TagItemPtr) : APTR;
  168.     BEGIN
  169.         RETURN ML.mNewObject(ADR(MD.mcGroup), TAG(buffer, MD.maGroupRows, rows, tagMore, tags, tagEnd));
  170.     END RowGroup;
  171.  
  172. PROCEDURE PageGroup(tags : UD.TagItemPtr) : APTR;
  173.     BEGIN
  174.          RETURN ML.mNewObject(ADR(MD.mcGroup),TAG(buffer, MD.maGroupPageMode, TRUE, tagMore, tags, tagEnd));
  175.     END PageGroup;
  176.  
  177. PROCEDURE ColorfieldObject(tags : UD.TagItemPtr) : APTR;
  178.     BEGIN
  179.          RETURN ML.mNewObject(ADR(MD.mcColorfield), tags);
  180.     END ColorfieldObject;
  181.  
  182. PROCEDURE ColoradjustObject(tags : UD.TagItemPtr) : APTR;
  183.     BEGIN
  184.          RETURN ML.mNewObject(ADR(MD.mcColoradjust), tags);
  185.     END ColoradjustObject;
  186.  
  187. PROCEDURE PaletteObject(tags : UD.TagItemPtr) : APTR;
  188.     BEGIN
  189.          RETURN ML.mNewObject(ADR(MD.mcPalette), tags);
  190.     END PaletteObject;
  191.  
  192. PROCEDURE VirtgroupObject(tags : UD.TagItemPtr) : APTR;
  193.     BEGIN
  194.          RETURN ML.mNewObject(ADR(MD.mcVirtgroup), tags);
  195.     END VirtgroupObject;
  196.  
  197. PROCEDURE ScrollgroupObject(tags : UD.TagItemPtr) : APTR;
  198.     BEGIN
  199.          RETURN ML.mNewObject(ADR(MD.mcScrollgroup), tags);
  200.     END ScrollgroupObject;
  201.  
  202. PROCEDURE VGroupV(tags : UD.TagItemPtr) : APTR;
  203.     BEGIN
  204.          RETURN ML.mNewObject(ADR(MD.mcVirtgroup), tags);
  205.     END VGroupV;
  206.  
  207. PROCEDURE HGroupV(tags : UD.TagItemPtr) : APTR;
  208.     BEGIN
  209.         RETURN ML.mNewObject(ADR(MD.mcVirtgroup), TAG(buffer, MD.maGroupHoriz, TRUE, tagMore, tags, tagEnd));
  210.     END HGroupV;
  211.  
  212. PROCEDURE ColGroupV(cols : LONGCARD; tags : UD.TagItemPtr) : APTR;
  213.     BEGIN
  214.         RETURN ML.mNewObject(ADR(MD.mcVirtgroup), TAG(buffer, MD.maGroupColumns, cols, tagMore, tags, tagEnd));
  215.     END ColGroupV;
  216.  
  217. PROCEDURE RowGroupV(rows : LONGCARD; tags : UD.TagItemPtr) : APTR;
  218.     BEGIN
  219.         RETURN ML.mNewObject(ADR(MD.mcVirtgroup), TAG(buffer, MD.maGroupRows, rows, tagMore, tags, tagEnd));
  220.     END RowGroupV;
  221.  
  222. PROCEDURE PageGroupV(tags : UD.TagItemPtr) : APTR;
  223.     BEGIN
  224.          RETURN ML.mNewObject(ADR(MD.mcVirtgroup),TAG(buffer, MD.maGroupPageMode, TRUE, tagMore, tags, tagEnd));
  225.     END PageGroupV;
  226.  
  227.  
  228. (*
  229. **  MakeID
  230. **  Generate an ID out of a 4-char-string.
  231. **  Use it the as WindowID ! (look in MuiTest for an example!)
  232. *)
  233.  
  234. PROCEDURE MakeID (name : ShortString): LONGINT;
  235.  
  236.     BEGIN
  237.         RETURN ORD(name[0])+
  238.                ORD(name[1])*256+
  239.                ORD(name[2])*65536+
  240.                ORD(name[3])*16777216;
  241.     END MakeID;
  242.  
  243.  
  244.  
  245.  
  246. (*
  247. **  Hook-Support functions
  248. **  1. the dispatcher
  249. **  2. the MakeHook-Function
  250. **
  251. *)
  252.  
  253. PROCEDURE HookEntry(hook{R.A0}  : HookPtr;
  254.                     object{R.A2}: ADDRESS;
  255.                     args{R.A1}  : ADDRESS)     : ADDRESS;
  256.     (*$SaveA4:=TRUE*)
  257.     BEGIN
  258.         SETREG (R.A4, hook^.data);
  259.         RETURN CAST(HookDef,hook^.subEntry)(hook, object, args);
  260.     END HookEntry;
  261.  
  262. PROCEDURE MakeHook(entry:HookDef; VAR hook : HookPtr);
  263.  
  264.     BEGIN
  265.             ALLOCATE(hook,SIZE(Hook));
  266.             hook^.node.succ  := NIL;
  267.             hook^.node.pred  := NIL;
  268.             hook^.entry      := HookEntry;
  269.             hook^.subEntry   := CAST(ADDRESS,entry);
  270.             hook^.data       := REG(R.A4);
  271.     END MakeHook;
  272.  
  273.  
  274.  
  275. (*
  276. **
  277. **  Spacing Macros
  278. **
  279. *)
  280.  
  281. PROCEDURE HVSpace() : APTR;
  282.     BEGIN
  283.         RETURN ML.mNewObject(ADR(MD.mcRectangle), NIL);
  284.     END HVSpace;
  285.  
  286. PROCEDURE HSpace(x : LONGCARD) : APTR;
  287.     BEGIN
  288.         IF x#0 THEN 
  289.                 RETURN ML.mNewObject(ADR(MD.mcRectangle),
  290.                                      TAG(buffer,
  291.                                         MD.maFixWidth,     x,
  292.                                         MD.maVertWeight,   0,
  293.                                         tagEnd));
  294.                 ELSE   
  295.                 RETURN ML.mNewObject(ADR(MD.mcRectangle),
  296.                                      TAG(buffer,
  297.                                         MD.maVertWeight,   0,
  298.                                         tagEnd));
  299.                 END;
  300.     END HSpace;
  301.  
  302. PROCEDURE VSpace(x : LONGCARD) : APTR;
  303.     BEGIN
  304.         IF x#0 THEN 
  305.                 RETURN ML.mNewObject(ADR(MD.mcRectangle),
  306.                                      TAG(buffer,
  307.                                         MD.maFixHeight,     x,
  308.                                         MD.maHorizWeight,   0,
  309.                                         tagEnd));
  310.                 ELSE
  311.                 RETURN ML.mNewObject(ADR(MD.mcRectangle),
  312.                                      TAG(buffer,
  313.                                         MD.maHorizWeight,   0,
  314.                                         tagEnd));
  315.                 END;
  316.     END VSpace;
  317.  
  318.  
  319. (*
  320. **
  321. **  PopUp-Macro
  322. **
  323. *)
  324.  
  325. PROCEDURE Popup (object : APTR; 
  326.                  hook : HookPtr; 
  327.              VAR imageObj : APTR;
  328.                  imgSpec : ADDRESS) : APTR;
  329.     VAR
  330.         dummy    : APTR;
  331.         buffer   : ARRAY[0..20] OF LONGINT;
  332.  
  333.     BEGIN
  334.         imageObj := ImageObject(TAG(buffer,
  335.                         MD.maFrame,                 MD.mvFrameImageButton,
  336.                         MD.maImageSpec,             imgSpec,
  337.                         MD.maImageFontMatchWidth,   TRUE,
  338.                         MD.maImageFreeVert,         TRUE,
  339.                         MD.maInputMode,             MD.mvInputModeRelVerify,
  340.                         MD.maBackground,            MD.miBACKGROUND,
  341.                         tagEnd));
  342.  
  343.         dummy :=    HGroup(TAG(buffer,
  344.                         MD.maGroupSpacing,      1,
  345.                         Child,                  object,
  346.                         Child,                  imageObj,
  347.                         tagEnd));
  348.  
  349.         IF (dummy#NIL) AND (imageObj#NIL) THEN
  350.             DoMethod(imageObj, TAG(buffer, MD.mmNotify,
  351.                         MD.maPressed, FALSE,
  352.                         dummy, 2,
  353.                         MD.mmCallHook, hook));
  354.                         RETURN dummy;
  355.         END;
  356.         RETURN 0;
  357.  
  358.     END Popup;
  359.  
  360.  
  361. (*
  362. **
  363. ** String-Object
  364. **
  365. ** Makes a simple String-Gadget
  366. **
  367. *)
  368.  
  369. PROCEDURE String(contents : ARRAY OF CHAR; maxlen : LONGINT) : APTR;
  370.     BEGIN
  371.         RETURN StringObject(TAG(buffer,
  372.                             MD.maFrame,            MD.mvFrameString,
  373.                             MD.maStringMaxLen,     maxlen,
  374.                             MD.maStringContents,   ADR(contents),
  375.                             tagEnd));
  376.     END String;
  377.  
  378. PROCEDURE KeyString(contents : ARRAY OF CHAR; maxlen : LONGINT; key : CHAR) : APTR;
  379.     BEGIN
  380.         RETURN StringObject(TAG(buffer,
  381.                             MD.maFrame,             MD.mvFrameString,
  382.                             MD.maStringMaxLen,      maxlen,
  383.                             MD.maStringContents,    ADR(contents),
  384.                             MD.maControlChar,       key,
  385.                             tagEnd));
  386.     END KeyString;
  387.  
  388. (*
  389. **
  390. ** Checkmark
  391. **
  392. *)
  393.  
  394. PROCEDURE Checkmark(selected : BOOLEAN) : APTR;
  395.     BEGIN
  396.         RETURN ImageObject( TAG(buffer,
  397.                             MD.maFrame,            MD.mvFrameImageButton,
  398.                             MD.maInputMode,        MD.mvInputModeToggle,
  399.                             MD.maImageSpec,        MD.miCheckMark,
  400.                             MD.maImageFreeVert,    TRUE,
  401.                             MD.maSelected,         selected,
  402.                             MD.maBackground,       MD.miButtonBack,
  403.                             MD.maShowSelState,     FALSE,
  404.                             tagEnd));
  405.     END Checkmark;
  406.  
  407. PROCEDURE KeyCheckmark(selected : BOOLEAN; key : CHAR) : APTR;
  408.     BEGIN
  409.         RETURN ImageObject( TAG(buffer,
  410.                             MD.maFrame,            MD.mvFrameImageButton,
  411.                             MD.maInputMode,        MD.mvInputModeToggle,
  412.                             MD.maImageSpec,        MD.miCheckMark,
  413.                             MD.maImageFreeVert,    TRUE,
  414.                             MD.maSelected,         selected,
  415.                             MD.maBackground,       MD.miButtonBack,
  416.                             MD.maShowSelState,     FALSE,
  417.                             MD.maControlChar,      key,
  418.                             tagEnd));
  419.     END KeyCheckmark;
  420.  
  421. (*
  422. **
  423. ** Buttons
  424. **
  425. *)
  426.  
  427. PROCEDURE Simplebutton(name : ARRAY OF CHAR) : APTR;
  428.     BEGIN
  429.         RETURN TextObject(  TAG(buffer,
  430.                             MD.maFrame,            MD.mvFrameButton,
  431.                             MD.maTextContents,     ADR(name),
  432.                             MD.maTextPreParse,     ADR("\033c"),
  433.                             MD.maTextSetMax,       FALSE,
  434.                             MD.maInputMode,        MD.mvInputModeRelVerify,
  435.                             MD.maBackground,       MD.miButtonBack,
  436.                             tagEnd));
  437.  
  438.     END Simplebutton;
  439.  
  440.  
  441. PROCEDURE Keybutton(name : ARRAY OF CHAR; key : CHAR) : APTR;
  442.     BEGIN
  443.         RETURN TextObject(  TAG(buffer,
  444.                             MD.maFrame,            MD.mvFrameButton,
  445.                             MD.maTextContents,     ADR(name),
  446.                             MD.maTextPreParse,     ADR("\033c"),
  447.                             MD.maTextSetMax,       FALSE,
  448.                             MD.maTextHiChar,       key,
  449.                             MD.maControlChar,      key,
  450.                             MD.maInputMode,        MD.mvInputModeRelVerify,
  451.                             MD.maBackground,       MD.miButtonBack,
  452.                             tagEnd));
  453.  
  454.     END Keybutton;
  455.  
  456.  
  457.  
  458. (*
  459. **
  460. **  Radio Object
  461. **
  462. *)
  463.  
  464. PROCEDURE Radio(name : ARRAY OF CHAR; array : APTR) : APTR;
  465.     BEGIN
  466.         RETURN RadioObject( TAG(buffer,
  467.                             MD.maFrame,             MD.mvFrameGroup,
  468.                             MD.maFrameTitle,        ADR(name),
  469.                             MD.maRadioEntries,      array,
  470.                             tagEnd));
  471.     END Radio;
  472.  
  473.  
  474. (*
  475. **
  476. ** Label Objects
  477. **
  478. *)
  479.  
  480. PROCEDURE Label(label : ARRAY OF CHAR) : APTR;
  481.     BEGIN
  482.         RETURN TextObject(  TAG(buffer,
  483.                             MD.maTextPreParse,         ADR("\033r"),
  484.                             MD.maTextContents,         ADR(label),
  485.                             MD.maWeight,               0,
  486.                             MD.maInnerLeft,            0,
  487.                             MD.maInnerRight,           0,
  488.                             tagEnd));
  489.     END Label;
  490.  
  491.  
  492. PROCEDURE Label1(label : ARRAY OF CHAR) : APTR;
  493.     BEGIN
  494.         RETURN TextObject(  TAG(buffer,
  495.                             MD.maTextPreParse,         ADR("\033r"),
  496.                             MD.maTextContents,         ADR(label),
  497.                             MD.maWeight,               0,
  498.                             MD.maInnerLeft,            0,
  499.                             MD.maInnerRight,           0,
  500.                             MD.maFrame,                MD.mvFrameButton,
  501.                             MD.maFramePhantomHoriz,    TRUE,
  502.                             tagEnd));
  503.     END Label1;
  504.  
  505.  
  506. PROCEDURE Label2(label : ARRAY OF CHAR) : APTR;
  507.     BEGIN
  508.         RETURN TextObject(  TAG(buffer,
  509.                             MD.maTextPreParse,         ADR("\033r"),
  510.                             MD.maTextContents,         ADR(label),
  511.                             MD.maWeight,               0,
  512.                             MD.maInnerLeft,            0,
  513.                             MD.maInnerRight,           0,
  514.                             MD.maFrame,                MD.mvFrameString,
  515.                             MD.maFramePhantomHoriz,    TRUE,
  516.                             tagEnd));
  517.     END Label2;
  518.  
  519.  
  520. PROCEDURE KeyLabel(label : ARRAY OF CHAR; HiChar : CHAR) : APTR;
  521.     BEGIN
  522.         RETURN TextObject(  TAG(buffer,
  523.                             MD.maTextPreParse,         ADR("\033r"),
  524.                             MD.maTextContents,         ADR(label),
  525.                             MD.maWeight,               0,
  526.                             MD.maInnerLeft,            0,
  527.                             MD.maInnerRight,           0,
  528.                             MD.maTextHiChar,           HiChar,
  529.                             tagEnd));
  530.     END KeyLabel;
  531.  
  532.  
  533. PROCEDURE KeyLabel1(label : ARRAY OF CHAR; HiChar : CHAR) : APTR;
  534.     BEGIN
  535.         RETURN TextObject(  TAG(buffer,
  536.                             MD.maTextPreParse,         ADR("\033r"),
  537.                             MD.maTextContents,         ADR(label),
  538.                             MD.maWeight,               0,
  539.                             MD.maInnerLeft,            0,
  540.                             MD.maInnerRight,           0,
  541.                             MD.maTextHiChar,           HiChar,
  542.                             MD.maFrame,                MD.mvFrameButton,
  543.                             MD.maFramePhantomHoriz,    TRUE,
  544.                             tagEnd));
  545.     END KeyLabel1;
  546.  
  547.  
  548. PROCEDURE KeyLabel2(label : ARRAY OF CHAR; HiChar : CHAR) : APTR;
  549.     BEGIN
  550.         RETURN TextObject(  TAG(buffer,
  551.                             MD.maTextPreParse,         ADR("\033r"),
  552.                             MD.maTextContents,         ADR(label),
  553.                             MD.maWeight,               0,
  554.                             MD.maInnerLeft,            0,
  555.                             MD.maInnerRight,           0,
  556.                             MD.maTextHiChar,           HiChar,
  557.                             MD.maFrame,                MD.mvFrameString,
  558.                             MD.maFramePhantomHoriz,    TRUE,
  559.                             tagEnd));
  560.     END KeyLabel2;
  561.  
  562. (*
  563. **
  564. ** Controlling Objects
  565. **
  566. ** Note : get didn't work in previous releases
  567. **
  568. *)
  569.  
  570. PROCEDURE get(obj : APTR; attr : LONGCARD; store : ADDRESS);
  571.     BEGIN
  572.         DoMethod(obj,TAG(buffer, omGET,
  573.             attr, store));
  574.     END get;
  575.  
  576. PROCEDURE set(obj : APTR; attr : LONGCARD; value : LONGINT);
  577.     VAR dummy : APTR;
  578.     BEGIN
  579.         dummy:=SetAttrsA(obj, TAG(buffer,attr,value,tagEnd));
  580.     END set;
  581.  
  582. PROCEDURE setmutex(obj : APTR; n : LONGINT);
  583.     BEGIN
  584.         set(obj,MD.maRadioActive,n);
  585.     END setmutex;
  586.  
  587. PROCEDURE setcycle(obj : APTR; n : LONGINT);
  588.     BEGIN
  589.         set(obj,MD.maCycleActive,n);
  590.     END setcycle;
  591.  
  592. PROCEDURE setstring(obj : APTR; s : ARRAY OF CHAR);
  593.     BEGIN
  594.         set(obj,MD.maStringContents,ADR(s));
  595.     END setstring;
  596.  
  597. PROCEDURE setcheckmark(obj : APTR; b : BOOLEAN);
  598.     BEGIN
  599.         IF b THEN set(obj,MD.maSelected,1);
  600.              ELSE set(obj,MD.maSelected,0);
  601.              END;
  602.     END setcheckmark;
  603.  
  604. PROCEDURE setslider(obj : APTR; l : LONGINT);
  605.     BEGIN
  606.         set(obj,MD.maSliderLevel,l);
  607.     END setslider;
  608.  
  609.  
  610. (*
  611. ** NoteClose (app,obj,ID)
  612. *)
  613.  
  614. PROCEDURE NoteClose(app : APTR; 
  615.                     obj : APTR; 
  616.                     ID  : LONGINT);
  617.     BEGIN
  618.         DoMethod(obj,TAG(buffer,
  619.                     MD.mmNotify,MD.maWindowCloseRequest,TRUE,
  620.                     app,2,MD.mmApplicationReturnID,ID));
  621.     END NoteClose;
  622.  
  623. (*
  624. **  Notebutton (app,obj,ID)
  625. *)
  626.  
  627. PROCEDURE NoteButton(app : APTR;
  628.                      obj : APTR; 
  629.                      ID  : LONGINT);
  630.     BEGIN
  631.         DoMethod(obj,TAG(buffer,
  632.                         MD.mmNotify,MD.maPressed, FALSE,
  633.                         app,2,MD.mmApplicationReturnID,ID));
  634.     END NoteButton;
  635.  
  636. (*
  637. ** RemMember (obj,member)
  638. *)
  639.  
  640. PROCEDURE RemMember(obj : APTR; member : APTR);
  641.     BEGIN
  642.         DoMethod(obj,TAG(buffer,
  643.                     omREMMEMBER, member));
  644.     END RemMember;
  645.  
  646. (*
  647. ** AddMember (obj,member)
  648. *)
  649.  
  650. PROCEDURE AddMember(obj : APTR; member : APTR);
  651.     BEGIN
  652.         DoMethod(obj,TAG(buffer,
  653.                     omADDMEMBER, member));
  654.     END AddMember;
  655.  
  656. END MuiMacros.
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.